package br.com.spb.web;

import javax.servlet.http.HttpServletRequest;
import br.com.spb.domain.Deputado;
import br.com.spb.domain.Estado;
import br.com.spb.persistence.DeputadoDao;
import br.com.spb.persistence.EstadoDao;
import br.com.spb.support.SpbUtils;

public class DeputadoWeb {
	
	public static void cadastrar(HttpServletRequest request){ 
		try {
			String codPessoa = request.getParameter("codPessoa");
			String sigUf = request.getParameter("sigUf");
			String codMunicipioOrigem = request.getParameter("codMunicipioOrigem");
			String codPartido = request.getParameter("codPartido");
			String nome = request.getParameter("nome");
			String votos = request.getParameter("votos");
			
			Deputado deputado = new Deputado();
			deputado.setCodigo(SpbUtils.getLong(codPessoa));
			deputado.setSigUf(sigUf);
			deputado.setCodMunicipioOrigem(SpbUtils.getLong(codMunicipioOrigem));
			deputado.setCodPartido(SpbUtils.getLong(codPartido));
			deputado.setNome(nome);
			deputado.setNumVotos(SpbUtils.getLong(votos)); 
			new DeputadoDao().save(deputado); 
			
			request.getSession().setAttribute("msg","Deputado Salvo com sucesso.");
			
		} catch (Exception e) {
			e.printStackTrace();
			request.getSession().setAttribute("erro","Erro ao tentar salvar o Deputado.");
		}
	}
	
		private static String TXT; 
		 

		public static String pesquisarDeputados(HttpServletRequest request){
			TXT = "";  
			String sigUf = request.getParameter("sigUf");
			if(sigUf != null  && !sigUf.trim().equals("")){
				preencherEstados(sigUf); 				
			}
			return TXT;
		}

 
		/**
		 * @param request
		 * @return
		 */
		public static String pesquisarDeputados( ){
			TXT = "";
			  
			preencherEstados(); 
			return TXT;
		}
		
		/**
		 * 
		 */
		private static void preencherEstados(){  
			for(Estado estado: new EstadoDao().findAll()){
				for(Deputado deputado: new DeputadoDao().findByParametros(estado.getSigUf(),null, null, null)){ 
					preencherDeputado(deputado); 
				}
			} 
		}
		
		/**
		 * 
		 */
		private static void preencherEstados(String uf){  
			for(Estado estado: new EstadoDao().findByDescricao(uf, null)){
				for(Deputado deputado: new DeputadoDao().findByParametros(estado.getSigUf(),null, null, null)){ 
					preencherDeputado(deputado); 
				}
			} 
		}
		
		/**
		 * @param municipio
		 * @param codPartido
		 */
		private static void preencherDeputado(Deputado deputado){ 
			
			if(cor.equals("linha1")){
				cor = "linha2";
			}else{
				cor = "linha1";
			}
			TXT += "" +
			"<tr class=\""+cor+"\">" +
			"	<td class=\""+cor+"\">"+ deputado.getSigUf() +"</td> " +
			"	<td class=\""+cor+"\">"+ deputado.getNome() +"</td> " +
			"	<td class=\""+cor+"\">"+ deputado.getMunicipioOrigem().getNome() +"</td> " +
			"	<td class=\""+cor+"\">"+ deputado.getPartido().getSigla() +"</td> " +
			"	<td style='text-align: right'; class=\""+cor+"\">"+ deputado.getNumVotosFormatado() +"</td> " +
			"	<td style='text-align: right'; class=\""+cor+"\">" +
					getLinkAlterar(deputado) +
					SpbUtils.getLinkExcluir(deputado.getCodigo().toString(), deputado.getNome(), "deputado") +
					"</td> " +
			"</tr>";
		 
		}
 

		private static String getLinkAlterar(Deputado deputado){
			String dados = "codPessoa="+deputado.getCodigo().toString()+  
			               "&codMunicipioOrigem="+deputado.getCodMunicipioOrigem().toString()+
			               "&codPartido="+deputado.getCodPartido().toString()+
			               "&nome="+deputado.getNome()+
			               "&votos="+deputado.getNumVotos().toString()+
			               "&sigUf="+deputado.getSigUf();
			
			return SpbUtils.getLinkAlterar("deputadoForm.jsp?"+dados, "corpo");
		}
		
		private static String cor = "linha1";
 
}
